package br.com.localfloripa.dao;

import java.util.List;

import javax.inject.Named;
import javax.persistence.Query;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import br.com.localfloripa.entities.Usuario;

@Named("usuarioDao")
public class UsuarioDao extends DaoManager<Usuario> {
	
	private static final Logger log = LoggerFactory.getLogger(UsuarioDao.class);
	
	public Usuario findById(Long idUsuario) throws Exception {
		return em.find(Usuario.class, idUsuario);
	}
	
	public Usuario findByLogin(String login) throws Exception {
		
		Query query = em.createQuery("SELECT u FROM Usuario u WHERE u.login = :login");
		query.setParameter("login", login);
		return (Usuario) query.getSingleResult();
		
	}
	
	public List<Usuario> listUsuariosPaginada(int first,int pageSize) throws Exception {
		
		Query query = em.createQuery("SELECT u FROM Usuario u LEFT JOIN u.cliente c LEFT JOIN c.pessoa p ORDER BY p.nome");
		query.setFirstResult(first);
		query.setMaxResults(pageSize);		
		return query.getResultList();
	}
	
	public Long countListUsuarios() {
		Query query = em.createQuery("SELECT COUNT(u.id) FROM Usuario u LEFT JOIN u.cliente c LEFT JOIN c.pessoa");
		return (Long) query.getSingleResult();
	}

}
